NOTE

1.1 Elasticsearch translog

1. translog是什么 Elasticsearch执行写入操作(index或者delete)的时候会把该操作写入日志 2. 为什么需要translog - 防止宕机造成数据丢失 - Elasticsearch的数据 refresh 进入filesystem cache会即searchable,

Elasticsearch / Search创建于 更新于 historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. translog是什么

Elasticsearch执行写入操作(index或者delete)的时候会把该操作写入日志

2. 为什么需要translog

  • 防止宕机造成数据丢失
    • Elasticsearch的数据refresh进入filesystem cache会即searchable,如果这个时候宕机了,那么数据就丢失了,但是如果执行flush操作刷入磁盘又太慢了
    • 而translog是顺序写磁盘的日志,因此速度很快
    • 但是注意,translog一开始也是在内存中的,只有执行 fsync(不是flush) 刷入磁盘才能保证数据不丢失
  • 提供实时CRUD
    • 按ID检索,更新或删除文档时,它会首先检查translog中是否有任何最近的更改,然后再尝试从相关segment中检索文档。 这意味着它始终可以实时访问最新的已知文档版本

3. translog fsync时机

  • 如果index.translog.durabilityrequest(默认),那么每次写入操作都会fsync到磁盘
  • 如果index.translog.durabilityasync,那么达到以下情况之一才会fsync进入磁盘
    • translog大小达到index.translog.flush_threshold_size,默认512mb
    • 时间达到index.translog.sync_interval,默认5s

4. 参考